﻿'FALTA: COMPROBAR SI HABILITA BIEN EL CAMPO CUANDO NO HAY NOTA CARGADA PARA EL ALUMNO
' -VER QUE CARGUE LA GRILLA DE NOTAS YA CARGADAS
' -QUE PUEDA SELECCIONAR Y MODIFICAR/ELIMINAR LA NOTA DE ESA GRILLA
'. HACER QUE BUSQUE POR ALGUNO DE LOS DOS CRITERIOS..... ESTAN LOS METODOS DEFINIDOS , PERO FALTA
' PROBAR QUE FUNCIONEN BIEN!
Public Class frm_ABM_NotasExamen
    Dim examen As frm_ABM_Examenes
    Dim legajoAlumno As Integer
    Dim acceso As New AccesoBD

    Enum estado
        insertar
        modificar
        eliminar
    End Enum
    Dim accion As New estado

    Private Sub frm_ABM_NotasExamen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        cargarGrillaAlumnos()
        cargarGrillaNotas()
        btnGuardar.Enabled = False
        btnCancelar.Enabled = False
        btnNuevo.Enabled = False
        gridDatosExamen.Enabled = False
        txt_nota.ReadOnly = True
        Me.grillaAlumnos.Focus()

    End Sub
    'ok
    Private Sub grillaNotas_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles grillaNotas.SelectionChanged
        If grillaNotas.SelectedRows.Count > 0 Then
            legajoAlumno = grillaNotas.Item("legajoNota", grillaNotas.SelectedRows(0).Index).Value
            cargarDatosExamenNota()
        End If
    End Sub
    'ok
    Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click
        txt_nota.ReadOnly = False
        limpiarCampos()
        Me.txt_alumno.Text = legajoAlumno
        gridDatosExamen.Enabled = True
        btnGuardar.Enabled = True
        btnCancelar.Enabled = True
        accion = estado.insertar
        grillaAlumnos.Enabled = False
        txt_nota.Focus()
    End Sub
    'OK
    Private Sub cargarDatosExamenNota()
        limpiarCampos()
        Dim comando As String
        Dim tabla As DataTable
        comando = " DetalleExamenes d where d.idCurso=" & Integer.Parse(Me.txt_id.Text)
        comando &= " and d.fechaExamen='" & DateTime.Parse(Me.txt_fecha_examen.Text)
        comando &= "' and d.fechaInicioCurso='" & DateTime.Parse(Me.txt_fecha_curso.Text)
        comando &= "' and d.legajoAlumno=" & Me.legajoAlumno

        tabla = acceso.devuelveTabla(comando)
        Dim fila As DataRow = tabla.Rows(0)
        Me.txt_alumno.Text = CSng(fila("legajoAlumno"))
        Me.txt_nota.Text = CSng(fila("nota"))
        Me.txt_nota.ReadOnly = True

    End Sub
    'OK
    Private Sub cargarGrillaAlumnos()
        Dim comando As String
        Dim tabla As DataTable
        comando = "select a.legajoAlumno, a.apellido, a.nombre from CursadoXAlumno cxa, Alumnos a where cxa.idCurso="
        comando &= Me.txt_id.Text & " and cxa.fechaInicio='" & DateTime.Parse(Me.txt_fecha_curso.Text)
        comando &= "' and cxa.legajoAlumno=a.legajoAlumno"

        tabla = acceso.ejecutaSQL(comando)
        If tabla.Rows.Count = 0 Then
            MsgBox("No hay alumnos inscriptos en este curso!")
            Me.btnVolver.Focus()
            Exit Sub
        End If
        Dim c As Integer
        For c = 0 To tabla.Rows.Count - 1
            Me.grillaAlumnos.Rows.Add(tabla.Rows(c)("legajoAlumno"), tabla.Rows(c)("apellido"), tabla.Rows(c)("nombre"))
        Next

    End Sub
    'OK
    Private Sub limpiarCampos()
        Me.txt_alumno.Text = ""
        Me.txt_nota.Text = ""
    End Sub

    Private Sub txt_nota_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_nota.KeyPress
        If IsNumeric(e.KeyChar) = False Then
            MsgBox("Caracter no válido! Ingrese SOLO numeros", vbCritical, "Importante")
            e.KeyChar = ""
        End If
    End Sub
    'OK
    Private Sub txt_nota_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_nota.Validated
        If txt_nota.Text = "" Then
            MsgBox("Ingrese nota!")
            txt_nota.Focus()
            Exit Sub
        End If
        If Integer.Parse(txt_nota.Text) > 10 Or Integer.Parse(txt_nota.Text) < 0 Then
            MsgBox("La nota puede estar en un rango del 0 al 10!")
            txt_nota.Focus()
            Exit Sub
        End If
    End Sub

    Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        Dim comando As String
        If accion = estado.insertar Then
            comando = "insert into DetalleExamenes values(" & Integer.Parse(Me.txt_id.Text)
            comando &= ",'" & DateTime.Parse(Me.txt_fecha_curso.Text) & "','"
            comando &= DateTime.Parse(Me.txt_fecha_examen.Text)
            comando &= "'," & Integer.Parse(Me.legajoAlumno) & "," & Integer.Parse(Me.txt_nota.Text) & ")"
            acceso._insertar(comando)
        End If
        If accion = estado.modificar Then
            comando = "update DetalleExamenes set nota=" & Me.txt_nota.Text
            comando &= " where idCurso=" & Integer.Parse(Me.txt_id.Text)
            comando &= " and fechaInicioCurso='" & DateTime.Parse(Me.txt_fecha_curso.Text)
            comando &= "' and fechaExamen='" & DateTime.Parse(Me.txt_fecha_examen.Text) & "'"
            comando &= " and legajoAlumno=" & Integer.Parse(Me.txt_alumno.Text)
            acceso._modificar(comando)

        End If
        If accion = estado.eliminar Then
            comando = "delete DetalleExamenes where idCurso=" & Integer.Parse(Me.txt_id.Text)
            comando &= " and fechaInicioCurso='" & DateTime.Parse(Me.txt_fecha_curso.Text)
            comando &= "' and fechaExamen= '" & DateTime.Parse(Me.txt_fecha_examen.Text) & "'"
            comando &= " and legajoAlumno=" & Integer.Parse(Me.txt_alumno.Text)
            acceso._eliminar(comando)
        End If
        cargarGrillaNotas()
        btnGuardar.Enabled = False
        btnCancelar.Enabled = False
        btnNuevo.Enabled = True
        Me.grillaAlumnos.Enabled = True
        Me.grillaAlumnos.Focus()

    End Sub
    'OK
    Private Function existeNota(ByVal buscado As Integer) As Boolean
        Dim comando As String
        comando = "DetalleExamenes d"
        comando &= " where d.idCurso=" & Integer.Parse(Me.txt_id.Text)
        comando &= " and d.fechaInicioCurso='" & DateTime.Parse(Me.txt_fecha_curso.Text)
        comando &= "' and d.fechaExamen= '" & DateTime.Parse(Me.txt_fecha_examen.Text) & "'"
        comando &= " and d.legajoAlumno=" & Integer.Parse(buscado)
        Dim tabla As DataTable = acceso.devuelveTabla(comando)
        If tabla.Rows.Count > 0 Then
            Return True
            Exit Function
        End If
        Return False
    End Function
    'los parametros opcionales son para busqueda
    Private Sub cargarGrillaNotas(Optional ByRef legajo As String = "", Optional ByRef apellido As String = "")
        Dim tabla As New DataTable
        Dim comando As String
        'Dim lala As DateTime
        If legajo <> "" Or apellido <> "" Then
            'select * from DetalleExamenes d, Alumnos a
            'where d.idCurso=1 and d.fechaInicioCurso=CONVERT(datetime,'12-12-2013')
            'and d.fechaExamen=CONVERT(datetime, '26-12-2013') 
            'and (a.legajoAlumno=0 or a.apellido='Perez')
            'and d.legajoAlumno=a.legajoAlumno
            comando = "DetalleExamenes d, Alumnos a where d.idCurso=" & Integer.Parse(Me.txt_id.Text)
            comando &= " and d.fechaInicioCurso='" & DateTime.Parse(Me.txt_fecha_curso.Text)
            comando &= "' and d.fechaExamen='" & DateTime.Parse(Me.txt_fecha_examen.Text)
            comando &= "' and (a.legajoAlumno=" & legajo & "or a.apellido= '" & apellido
            comando &= "') and d.legajoAlumno=a.legajoAlumno"
        Else
            comando = "DetalleExamenes d, Alumnos a where d.idCurso=" & Integer.Parse(Me.txt_id.Text)
            comando &= " and d.fechaInicioCurso='" & DateTime.Parse(Me.txt_fecha_curso.Text)
            comando &= "' and d.fechaExamen= '" & DateTime.Parse(Me.txt_fecha_examen.Text) & "'"
            comando &= " and d.legajoAlumno=a.legajoAlumno"
        End If

        'lala = DateTime.Parse(Me.txt_fecha_curso.Text).Date --> para mostrar solo la fecha de algo

        tabla = acceso.devuelveTabla(comando)

        grillaNotas.Rows.Clear()
        Dim c As Integer
        For c = 0 To tabla.Rows.Count - 1
            grillaNotas.Rows.Add(tabla.Rows(c)("nota"), tabla.Rows(c)("legajoAlumno"), tabla.Rows(c)("nombre"), tabla.Rows(c)("apellido"))
        Next
        'SEGUIR DESDE ACA MAÑANA!!!!! LARGAR CON: UNA VEZ QUE YA CARGUE LA TABLA DE NOTAS...
    End Sub
    'OK
    Private Sub grillaAlumnos_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles grillaAlumnos.SelectionChanged
        'Establezco el legajo del alumno
        limpiarCampos()
        If grillaAlumnos.SelectedRows.Count > 0 Then
            Me.legajoAlumno = grillaAlumnos.Item("legajo", grillaAlumnos.SelectedRows(0).Index).Value
            If Me.existeNota(Me.legajoAlumno) Then
                cargarDatosExamenNota()
                gridDatosExamen.Enabled = True
                Me.txt_nota.ReadOnly = True
            Else
                Me.btnNuevo.Enabled = True  
            End If
        End If
    End Sub

    Private Sub ModificarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ModificarToolStripMenuItem.Click
        accion = estado.modificar
        gridDatosExamen.Enabled = True
        btnNuevo.Enabled = False
        btnGuardar.Enabled = True
        btnCancelar.Enabled = True
        btnCancelar.Enabled = True
        Me.txt_nota.ReadOnly = False
        Me.txt_nota.Focus()
    End Sub

    Private Sub EliminarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EliminarToolStripMenuItem.Click
        If MessageBox.Show("Esta seguro que desea eliminar el registro?!", "Eliminar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
            accion = estado.eliminar
            btnNuevo.Enabled = False
            btnGuardar.Enabled = True
            btnCancelar.Enabled = True
            Me.btnGuardar.Focus()
        End If
    End Sub

    Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
        ' ya comprobe en el validated que ninguno de los dos este vacio, entonces
        'si legajo esta vacio, el de apellido tiene que tener algo
        If Me.txt_busq_legajo.Text = "" Then
            cargarGrillaNotas(txt_busq_apellido.Text)
        Else 'si el de legajo esta con algo, tmb verifico que haya algo en apellido
            If txt_busq_apellido.Text = "" Then
                'si no hay nada, paso el legajo nomas
                cargarGrillaNotas(txt_busq_legajo.Text)
            End If
            ' si hay algo, paso los dos textos
            cargarGrillaNotas(txt_busq_legajo.Text, txt_busq_apellido.Text)
        End If
        Me.txt_busq_legajo.Text = ""
        Me.txt_busq_apellido.Text = ""
    End Sub

    Private Sub txt_busq_apellido_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_busq_apellido.Validated
        If txt_busq_legajo.Text = "" Then
            If txt_busq_apellido.Text = "" Then
                MsgBox("Debe ingresar un parámetro de búsqueda")
                txt_busq_legajo.Focus()
                Exit Sub
            End If
        End If
    End Sub

    Private Sub btnVolver_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVolver.Click
        Me.Close()
    End Sub
End Class